#ifndef _CRT_WSTR_H_
#define _CRT_WSTR_H_

#include <crt_core.hpp>

#ifdef __cplusplus
extern "C" {
#endif

wchar_t* s_wstrcpy(wchar_t* dst, size_t size, wchar_t const* src);

wchar_t* s_wstrncpy(wchar_t* dst, const wchar_t* src, size_t size);

wchar_t* s_wstrcat(wchar_t* dst, size_t size, const wchar_t* src);

wchar_t* s_wstrncat(wchar_t* front, const wchar_t* back, size_t count);

int s_wstrcmp(const wchar_t* src, const wchar_t* dst);

int s_wstricmp(const wchar_t* dst, const wchar_t* src);

int s_wstrcasecmp(const wchar_t* dst, const wchar_t* src);

int s_wstrncmp(const wchar_t* first, const wchar_t* last, size_t count);

wchar_t* s_wstrchr(const wchar_t* string, wchar_t ch);

size_t s_wstrspn(const wchar_t* string, const wchar_t* control);

size_t s_wstrcspn(const wchar_t* string, const wchar_t* control);

wchar_t* s_wstrpbrk(const wchar_t* string, const wchar_t* control);

wchar_t* s_wstrstr(const wchar_t* wcs1, const wchar_t* wcs2);

size_t s_wstrlen(const wchar_t* wcs);
size_t s_wstrnlen(const wchar_t* s, size_t maxlen);

wchar_t* s_wstrtok(wchar_t* string, const wchar_t* control, wchar_t** context);

wchar_t* s_wstrset(wchar_t* string, wchar_t val);

wchar_t* s_wstrrev(wchar_t* string);

#ifdef __cplusplus
}
#endif

#endif
